package com.Sep_One;

import java.util.Arrays;
import java.util.Stack;

/**
 * 1475. 商品折扣后的最终价格
 * 商店里正在进行促销活动，如果你要买第 i 件商品，那么你可以得到与 prices[j] 相等的折扣，其中 j 是满足 j > i 且 prices[j] <= prices[i] 的 最小下标 ，如果没有满足条件的 j ，你将没有任何折扣。
 *
 * 请你返回一个数组，数组中第 i 个元素是折扣后你购买商品 i 最终需要支付的价格。
 *
 * 来源：力扣（LeetCode）
 * 链接：https://leetcode.cn/problems/final-prices-with-a-special-discount-in-a-shop
 * 著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。
 */

public class Solution1475 {
    public static int[] finalPrices(int[] prices) {
        Stack<Integer> stack=new Stack<>();
        for (int i=0;i<prices.length;i++)
        {
            //System.out.println(Arrays.toString(prices));
            while (!stack.isEmpty()&&prices[stack.peek()]>=prices[i])
            {
                //System.out.println(stack.peek());
                prices[stack.pop()]-=prices[i];
            }
            stack.push(i);
        }
        return prices;
    }

    public static void main(String[] args) {
        int[] nums={8,4,6,2,3};
        System.out.println(Arrays.toString(finalPrices(nums)));
    }
}
